
//判断当前时间
export function timeFix() {
  const time = new Date()
  const hour = time.getHours()
  return hour < 9 ? '早上好呀！' : (hour <= 11 ? '上午好呀！' : (hour <= 13 ? '中午好呀！' : (hour < 20 ? '下午好呀！' : '晚上好呀！')))
}

//随机消息
export function messageRandom() {
  const arr = ['休息一会儿吧!', '今晚准备吃什么呢?', '要不要打一把撸啊撸!', '我猜你可能累了!']
  let index = Math.floor((Math.random()*arr.length))
  return arr[index]
}



/**
 * 过滤对象中为空的属性
 * @param obj
 * @returns {*}
 */
export function filterObj(obj) {
  if (!(typeof obj == 'object')) {
    return;
  }

  for ( var key in obj) {
    if (obj.hasOwnProperty(key)
      && (obj[key] == null || obj[key] == undefined || obj[key] === '')) {
      delete obj[key];
    }
  }
  return obj;
}

/**
 * 时间格式化
 * @param value
 * @param fmt
 * @returns {*}
 */
export function formatDate(value, fmt) {
  var regPos = /^\d+(\.\d+)?$/;
  if(regPos.test(value)){
    //如果是数字
    let getDate = new Date(value);
    let o = {
      'M+': getDate.getMonth() + 1,
      'd+': getDate.getDate(),
      'h+': getDate.getHours(),
      'm+': getDate.getMinutes(),
      's+': getDate.getSeconds(),
      'q+': Math.floor((getDate.getMonth() + 3) / 3),
      'S': getDate.getMilliseconds()
    };
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (getDate.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (let k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt;
  }else{
    //TODO
    value = value.trim();
    return value.substr(0,fmt.length);
  }
}





/**
 * 深度克隆对象、数组
 * @param obj 被克隆的对象
 * @return 克隆后的对象
 */
export function cloneObject(obj) {
  return JSON.parse(JSON.stringify(obj))
}

/**
 * 随机生成数字
 *
 * 示例：生成长度为 12 的随机数：randomNumber(12)
 * 示例：生成 3~23 之间的随机数：randomNumber(3, 23)
 *
 * @param1 最小值 | 长度
 * @param2 最大值
 * @return int 生成后的数字
 */
export function randomNumber() {
  // 生成 最小值 到 最大值 区间的随机数
  const random = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min)
  }
  if (arguments.length === 1) {
    let [length] = arguments
  // 生成指定长度的随机数字，首位一定不是 0
    let nums = [...Array(length).keys()].map((i) => (i > 0 ? random(0, 9) : random(1, 9)))
    return parseInt(nums.join(''))
  } else if (arguments.length >= 2) {
    let [min, max] = arguments
    return random(min, max)
  } else {
    return Number.NaN
  }
}

/**
 * 随机生成字符串
 * @param length 字符串的长度
 * @param chats 可选字符串区间（只会生成传入的字符串中的字符）
 * @return string 生成的字符串
 */
export function randomString(length, chats) {
  if (!length) length = 1
  if (!chats) chats = '0123456789qwertyuioplkjhgfdsazxcvbnm'
  let str = ''
  for (let i = 0; i < length; i++) {
    let num = randomNumber(0, chats.length - 1)
    str += chats[num]
  }
  return str
}

/**
 * 随机生成uuid
 * @return string 生成的uuid
 */
export function randomUUID() {
  let chats = '0123456789abcdef'
  return randomString(32, chats)
}

/**
 * 下划线转驼峰
 * @param string
 * @returns {*}
 */
export function underLine2CamelCase(string){
  return string.replace( /_([a-z])/g, function( all, letter ) {
    return letter.toUpperCase();
  });
}

export function getCurrentTime() {
  //获取当前时间并打印
    let yy = new Date().getFullYear();
    let mm = new Date().getMonth()+1<10 ? '0'+(new Date().getMonth()+1) : new Date().getMonth()+1;
    let dd = new Date().getDate()<10 ? '0'+ new Date().getDate() : new Date().getDate();
    let hh = new Date().getHours()<10 ? '0'+ new Date().getHours() : new Date().getHours();
    let mf = new Date().getMinutes()<10 ? '0'+new Date().getMinutes() : new Date().getMinutes();
    let ss = new Date().getSeconds()<10 ? '0'+new Date().getSeconds() : new Date().getSeconds();
    return yy+'-'+mm+'-'+dd+' '+hh+':'+mf+':'+ss;
}

//转时间戳
export function formatTime(time){    
    if(!time){
       return;
    }
    let date = time.replace(/-/g,'/');
    let timestamp = new Date(date).getTime();
    return timestamp
}

export function timeChange(timeValue) {
  let timeOld = formatTime(timeValue)
  let timeNew = Date.parse(new Date()); //当前时间
  let timeDiffer = timeNew - timeOld; //与当前时间误差
  let returnTime = '';
  if (timeDiffer <= 60000) { //一分钟内
   returnTime = '刚刚';
  } else if (timeDiffer > 60000 && timeDiffer < 3600000) { //1小时内
   returnTime = Math.floor(timeDiffer / 60000) + '分钟前';
  } else if (timeDiffer >= 3600000 && timeDiffer < 86400000 && isYestday(timeOld) === false) { //今日
   returnTime = timeValue.substr(11, 5);
  } else if (timeDiffer > 3600000 && isYestday(timeOld) === true) { //昨天
   returnTime = '昨天' + timeValue.substr(11, 5);
  } else if (timeDiffer > 86400000 && isYestday(timeOld) === false && isYear(timeOld) === true) { //今年
   returnTime = timeValue.substr(5, 11);
  } else if (timeDiffer > 86400000 && isYestday(timeOld) === false && isYear(timeOld) === false) { //不属于今年
   returnTime = timeValue.substr(0, 10);
  }
  return returnTime;
}


function isYestday(theDate){
  var date = (new Date());    //当前时间
  var today = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime(); //今天凌晨
  var yestday = new Date(today - 24*3600*1000).getTime();
  return theDate < today && yestday <= theDate;
}


function isYear (timeValue) { // 是否为今年
  const dateyear = new Date(timeValue).getFullYear()
  const toyear = new Date().getFullYear()
  if (dateyear === toyear) {
    return true
  } else {
    return false
  }
}






